常用 kubectl 命令记录
kubectl 命令是什么?
kubectl 是 kubernetes 集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。
kubectl 命令的语法如下:
kubectl [command] [type] [name] [flags]
- command:指定要对资源执行的操作,比如 create、get、delete。
- type:指定资源的类型,比如 deployment、pod、service。
- name:指定资源的名称,名称大小写敏感。
- flags:指定额外的可选参数。
示例:
# 查看所有的 pod
kubectl get pods
# 查看某个 pod
kubectl get pod pod_name
# 查看某个 pod,以 yaml 格式展示结果
kubectl get pod pod_name -o yaml
常用操作(command)
kubernetes 允许对资源进行多种操作,可以通过 --help
查看详细的操作命令:
kubectl --help
经常使用的操作如下所示:
命令 | 命令作用 |
---|---|
create | 创建一个资源 |
edit | 编辑一个资源 |
get | 获取一个资源 |
patch | 更新一个资源 |
delete | 删除一个资源 |
explain | 展示资源文档 |
运行和调试:
命令 | 命令作用 |
---|---|
run | 在集群中运行一个指定的镜像 |
expose | 暴露资源为Service |
describe | 显示资源内部信息 |
logs | 输出容器在Pod中的日志 |
attach | 进入运行中的容器 |
exec | 执行容器中的一个命令 |
cp | 在Pod内外复制文件 |
rollout | 管理资源的发布 |
scale | 扩(缩)容Pod的数量 |
autoscale | 自动调整Pod的数量 |
其它命令:
命令 | 命令作用 |
---|---|
apply | 通过文件对资源进行配置 |
label | 更新资源上的标签 |
cluster-info | 显示集群信息 |
version | 显示当前Client和Server的版本 |
资源类型(type)
kubernetes 中所有的内容都抽象为资源,可以通过下面的命令进行查看:
kubectl api-resources
经常使用的资源如下所示:
集群级别资源:
资源名称 | 缩写 | 资源作用 |
---|---|---|
nodes | no | 集群组成部分 |
namespaces | ns | 隔离Pod |
Pod资源:
资源名称 | 缩写 | 资源作用 |
---|---|---|
Pods | po | 装载容器 |
Pod资源控制器:
资源名称 | 缩写 | 资源作用 |
---|---|---|
replicationcontrollers | rc | 控制Pod资源 |
replicasets | rs | 控制Pod资源 |
deployments | deploy | 控制Pod资源 |
daemonsets | ds | 控制Pod资源 |
jobs | 控制Pod资源 | |
cronjobs | cj | 控制Pod资源 |
horizontalpodautoscalers | hpa | 控制Pod资源 |
statefulsets | sts | 控制Pod资源 |
服务发现资源:
资源名称 | 缩写 | 资源作用 |
---|---|---|
services | svc | 统一Pod对外接口 |
ingress | ing | 统一Pod对外接口 |
存储资源:
资源名称 | 缩写 | 资源作用 |
---|---|---|
volumeattachments | 存储 | |
persistentvolumes | pv | 存储 |
persistentvolumeclaims | pvc | 存储 |
配置资源:
资源名称 | 缩写 | 资源作用 |
---|---|---|
configmaps | cm | 配置 |
secrets | 配置 |
使用示例
# 创建一个 namespace
kubectl create namespace dev
# 获取 namespace
kubectl get namespace
kubectl get ns
在刚才创建的 namespace 下创建并运行一个 Nginx 的 Pod
kubectl run nginx --image=nginx:1.17.1 -n dev
查看名为 dev 的 namespace 下的所有 Pod,如果不加 -n,默认就是 default 的 namespace
kubectl get pods -n dev
删除指定 namespace 下的指定 Pod
kubectl delete pod nginx -n dev
删除指定的 namespace
kubectl delete namespace dev